package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.ParcelaDao;
import com.model.Parcela;

public class ParcelaFacade implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private ParcelaDao parcelaDao = new ParcelaDao();

	public void createParcela(Parcela parcela) {
		parcelaDao.beginTransaction();
		parcelaDao.save(parcela);
		parcelaDao.commitAndCloseTransaction();
	}

//	public void updateParcela(Parcela parcela) {
//		parcelaDao.beginTransaction();
//		Parcela persistedParcela = parcelaDao.find(parcela.getId());
//		persistedParcela.setName(parcela.getName());
//		persistedParcela.setAge(parcela.getAge());
//		parcelaDao.commitAndCloseTransaction();
//	}
	
	public void deleteParcela(Parcela parcela){
		parcelaDao.beginTransaction();
		Parcela persistedParcelaWithIdOnly = parcelaDao.findReferenceOnly(parcela.getIdParcela());
		parcelaDao.delete(persistedParcelaWithIdOnly);
		parcelaDao.commitAndCloseTransaction();
		
	}

	public Parcela findParcela(int parcelaId) {
		parcelaDao.beginTransaction();
		Parcela parcela = parcelaDao.find(parcelaId);
		parcelaDao.closeTransaction();
		return parcela;
	}

	public List<Parcela> listAll() {
		parcelaDao.beginTransaction();
		List<Parcela> result = parcelaDao.findAll();
		parcelaDao.closeTransaction();

		return result;
	}

//	public Parcela findParcelaWithAllDogs(int parcelaId) {
//		parcelaDao.beginTransaction();
//		Parcela parcela = parcelaDao.findParcelaWithAllDogs(parcelaId);
//		parcelaDao.closeTransaction();
//		return parcela;
//	}
//
//	public void addDogToParcela(int dogId, int parcelaId) {
//		parcelaDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		Parcela parcela = parcelaDao.find(parcelaId);
//		parcela.getDogs().add(dog);
//		dog.getParcela().add(parcela);
//		parcelaDao.commitAndCloseTransaction();
//	}
//
//	public void removeDogFromParcela(int dogId, int parcelaId) {
//		parcelaDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		Parcela parcela = parcelaDao.find(parcelaId);
//		parcela.getDogs().remove(dog);
//		dog.getParcela().remove(parcela);
//		parcelaDao.commitAndCloseTransaction();
//	}
}